home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
PPC1B3AA.ZIP
/
PAGEEDIT.PPS
< prev
next >
Wrap
Text File
|
1996-08-29
|
11KB
|
394 lines
;----------------------------------------------------------------------------
; Copyright(C) 1996, The AEGiS Corporation
;----------------------------------------------------------------------------
;
; PROCEDURE PageEdit()
;
; Full screen ansi page editor.
; Call PageEdit with the name of the page to be edited as parameter
;
; Note: PAGEEDIT.CFG & PAGEEDIT.PCB must be distributed along with your
; application.
;
;----------------------------------------------------------------------------
#lib
#nouser
;----------------------------------------------------------------------------
Declare Procedure PE_DispSel(Integer Seln)
Declare Procedure PE_EraseSel(Integer Seln)
Declare Procedure PE_RemoveCursor()
Declare Procedure PE_Menu(String PageName)
Declare Procedure PE_DispCurColor()
Declare Procedure PE_EraseCurColor()
Declare Procedure PageEdit(String PageName)
;----------------------------------------------------------------------------
Boolean PE_Quit
Boolean PE_InMenu
Boolean PE_Changed
String PE_Inverse, PE_Normale
Integer PE_CurCol,PE_BakColor
Integer PE_Sel
BigStr PE_k
String PE_ColorLeftSeparator, PE_ColorRightSeparator
String PE_SavedString,NoChangeString
Procedure PageEdit(String PageName)
Integer CurX, CurY
BigStr TopLine
BigStr EscToCommand, EscToResume
Integer EscToCommandX
Integer EscToResumeX
Integer a,b,c
String CfgFile
CfgFile = PPEPath() + "PAGEEDIT.CFG"
EscToCommand = ReadLine(CfgFile, 1)
EscToCommandX = ToInt(ReadLine(CfgFile, 2))
EscToResume = ReadLine(CfgFile, 3)
EscToResumeX = ToInt(ReadLine(CfgFile, 4))
PE_ColorLeftSeparator = ReadLine(CfgFile, 5)
PE_ColorRightSeparator = ReadLine(CfgFile, 6)
PE_SavedString = ReadLine(CfgFile,7)
NoChangeString = ReadLine(CfgFile,8)
PE_Normale = ReadLine(CfgFile, 9)
PE_Inverse = ReadLine(CfgFile, 10)
Fclose -1
StartDisp FNS
Color 15
Cls
CurX = 1
CurY = 2
If (Exist(PageName)) Then
Fopen 1, PageName, O_RD, S_DN
DispFile PPEPath() + "PAGEEDIT.PCB", DEFS
TopLine = ScrText(1,1,80,True)
AnsiPos EscToCommandX,1
Print EscToCommand
For a = 2 to 20
AnsiPos 1,a
FGet 1,PE_k
Print PE_k
Next
FClose 1
Else
DispFile PPEPath() + "PAGEEDIT.PCB", DEFS
TopLine = ScrText(1,1,80,True)
AnsiPos EscToCommandX,1
Print EscToCommand
Endif
PE_CurCol = 15
PE_DispCurColor()
Color PE_CurCol
AnsiPos CurX,CurY
While (1) Do
PE_k = Inkey()
If (PE_k <> "") Then
:tkt
Select case PE_k
Case "RIGHT"
Inc CurX
If (CurX > 80) then
CurX = 1
PE_k = "DOWN"
Goto tkt
Endif
AnsiPos CurX,CurY
Case "LEFT"
Dec CurX
If (CurX = 0) Then
CurX = 80
PE_k = "UP"
Goto tkt
Endif
AnsiPos CurX,CurY
Case "UP"
Dec CurY
If (CurY = 1) CurY = 20
AnsiPos CurX,CurY
Case "DOWN"
Inc CurY
If (CurY = 21) CurY = 2
AnsiPos CurX,CurY
Case "END"
CurX = 80
AnsiPos CurX,CurY
Case "HOME"
CurX = 1
AnsiPos CurX,CurY
Case "CTRL END"
CurX = len(RTrim(ScrText(1,CurY,80,False)," "))
If (CurX < 80) Inc CurX
AnsiPos CurX,CurY
Case "CTRL HOME"
CurX = Len(ScrText(1,CurY,80,False)) - Len(Ltrim(ScrText(1,CurY,80,False)," "))
Inc CurX
AnsiPos CurX,CurY
Case "CTRL PGDN"
CurY = 20
AnsiPos CurX,CurY
Case "CTRL PGUP"
CurY = 2
AnsiPos CurX,CurY
Case ""
PE_Changed = True
If (CurX > 1) Then
Dec CurX
AnsiPos CurX, CurY
Print ScrText(CurX + 1, CurY, 80-CurX+1,True)+" "
AnsiPos CurX, CurY
Color PE_CurCol
Else
Dec CurY
If (CurY = 1) CurY = 20
PE_k = "CTRL END"
Goto tkt
Endif
Case "DEL", "CTRL LEFT"
Print ScrText(CurX + 1, CurY, 80-CurX+1,True)+" "
AnsiPos CurX, CurY
Color PE_CurCol
PE_Changed = True
Case "CTRL RIGHT"
If (CurX < 80) Then
Print " "+ScrText(CurX, CurY, 80-CurX,True)
AnsiPos CurX, CurY
Color PE_CurCol
PE_Changed = True
Endif
Case Chr(9)
For a = 20 To CurY+1 Step -1
AnsiPos 1, a
Print ScrText(1,a-1,80,TRUE)
Next
AnsiPos 1, CurY
Print Space(80)
CurX = 1
AnsiPos CurX, CurY
Color PE_CurCol
PE_Changed = True
Case ""
For a = CurY+1 to 20
AnsiPos 1,a-1
Print ScrText(1,a,80,TRUE)
Next
AnsiPos 1, 20
Print Space(80)
CurX = 1
AnsiPos CurX, CurY
Color PE_CurCol
PE_Changed = True
Case Chr(27)
AnsiPos 1,1
Print TopLine
AnsiPos EscToCommandX,1
Print EscToResume
PE_Menu(PageName)
If (PE_Quit) Break
AnsiPos 1,1
Print TopLine
AnsiPos EscToCommandX,1
Print EscToCommand
AnsiPos CurX,CurY
Color PE_CurCol
Case Chr(13)
CurX = 1
PE_k = "DOWN"
Goto tkt
Case Else
If (len(PE_k) = 1) Then
PE_Changed = True
Print PE_k
PE_k = "RIGHT"
goto tkt
Endif
End Select
EndIf
EndWhile
EndProc
;----------------------------------------------------------------------------
Procedure PE_DispSel(Integer Seln)
AnsiPos 34+(Seln-1)*15,22
Print PE_Inverse,ScrText(34+(Seln-1)*15,22,15,False)
PE_RemoveCursor()
Endproc
;----------------------------------------------------------------------------
Procedure PE_EraseSel(Integer Seln)
AnsiPos 34+(Seln-1)*15,22
Print PE_Normale,ScrText(34+(Seln-1)*15,22,15,False)
PE_RemoveCursor()
Endproc
;----------------------------------------------------------------------------
Procedure PE_RemoveCursor()
AnsiPos 1,22
Color 0
Print " "
Backup 1
EndProc
;----------------------------------------------------------------------------
Procedure PE_Menu(String PageName)
Int A
PE_InMenu = True
PE_BakColor = PE_CurCol
PE_Sel = 16 - PE_CurCol
PE_DispCurColor()
PE_RemoveCursor()
While (1) Do
PE_k = Inkey()
If (PE_k <> "") Then
Select case PE_k
Case "RIGHT"
If (PE_Sel > 15) Then
PE_EraseSel(PE_Sel-15)
PE_Sel = PE_Sel + 1
If (PE_Sel = 19) Then
PE_Sel = 1
PE_CurCol = 15
PE_DispCurColor()
Else
PE_DispSel(PE_Sel-15)
Endif
Else
PE_EraseCurColor()
Inc PE_Sel
If (PE_Sel > 15) Then
PE_DispSel(PE_Sel-15)
Else
PE_CurCol = 16 - PE_Sel
PE_DispCurColor()
Endif
Endif
PE_RemoveCursor()
Case "LEFT"
If (PE_Sel > 15) Then
PE_EraseSel(PE_Sel-15)
PE_Sel = PE_Sel - 1
If (PE_Sel = 15) Then
PE_CurCol = 1
PE_DispCurColor()
Else
PE_DispSel(PE_Sel-15)
Endif
Else
PE_EraseCurColor()
Dec PE_Sel
If (PE_Sel = 0) Then
PE_Sel = 18
PE_DispSel(PE_Sel-15)
Else
PE_CurCol = 16 - PE_Sel
PE_DispCurColor()
Endif
Endif
PE_RemoveCursor()
Case Chr(27)
PE_InMenu = False
If (PE_Sel > 15) Then
PE_EraseSel(PE_Sel-15)
Else
PE_EraseCurColor()
Endif
PE_CurCol = PE_BakColor
PE_DispCurColor()
Break
Case Chr(13)
PE_InMenu = False
If (PE_Sel <= 15) Then
PE_EraseCurColor()
PE_DispCurColor()
Color PE_CurCol
Break
Else
PE_EraseSel(PE_Sel-15)
If (PE_Sel = 16) Then
If (PE_Changed) Then
Fcreate 1, PageName, O_WR, S_DN
FPutLn 1
For a = 2 to 20
FPutLn 1, ScrText(1,a,80, True)
Next
FClose 1
AnsiPos 1, 22
Print Space(40-len(stripatx(PE_SavedString))/2)
Print PE_SavedString
Print Space(80-GetX())
AnsiPos 40-len(stripatx(PE_SavedString))/2+Len(Stripatx(PE_SavedString))+1,22
Delay 2
Backup len(Stripatx(PE_SavedString))
Print "@X07" + StripAtx(PE_SavedString)
Delay 2
Backup len(Stripatx(PE_SavedString))
Print "@X08" + StripAtx(PE_SavedString)
Delay 2
Backup len(Stripatx(PE_SavedString))
Print Space(len(Stripatx(PE_SavedString)))
PE_RemoveCursor()
PE_Quit=True
Goto PGend
Else
:NcS
AnsiPos 1, 22
Print Space(40-len(stripatx(NoChangeString))/2)
Print NoChangeString
Print Space(80-GetX())
AnsiPos 40-len(stripatx(NoChangeString))/2+Len(Stripatx(NoChangeString))+1,22
Delay 2
Backup len(Stripatx(NoChangeString))
Print "@X07" + StripAtx(NoChangeString)
Delay 2
Backup len(Stripatx(NoChangeString))
Print "@X08" + StripAtx(NoChangeString)
Delay 2
Backup len(Stripatx(NoChangeString))
Print Space(len(Stripatx(NoChangeString)))
PE_RemoveCursor()
PE_Quit=True
Goto PGend
Endif
ElseIf (PE_Sel = 17) Then
PE_EraseCurColor()
PE_CurCol = PE_BakColor
PE_DispCurColor()
Break
ElseIf (PE_Sel = 18) Then
Goto NcS
Endif
Endif
End Select
EndIf
EndWhile
:PGend
Endproc
;----------------------------------------------------------------------------
Procedure PE_DispCurColor()
AnsiPos 33-PE_CurCol*2,22
Print PE_ColorLeftSeparator
Color PE_CurCol
If (PE_InMenu) Then
Print "█"
Else
Print "■"
Endif
Print PE_ColorRightSeparator
Endproc
;----------------------------------------------------------------------------
Procedure PE_EraseCurColor()
AnsiPos 33-PE_CurCol*2,22
Print " "
Color PE_CurCol
Print "■"
Print " "
Endproc
;----------------------------------------------------------------------------